<?php 
class Estado extends Controller{
    function Estado()
    {
        parent::Controller();
        $this->load->helper('url');
		$this->load->helper('form');
		$this->load->library('form_validation');
		$this->load->model('estado_model');
		$this->load->library('session');
		$this->load->library('my_library');
		$this->load->helper('date');
		$this->load->helper('html');
       	$this->load->library('Ajax_pagination');
    }
    
    function index()
    {
       $data['levelUser'] = $this->session->userdata('nivel');                
       if($data['levelUser'] == '1')
        {
        	$this->load->view('mod_estadoDiario/indexAdmin');
        }
        else
        {
        	$fecha_actual = mdate('%Y-%m-%d');
        	$ultimaFecha = $this->estado_model->getLastFecha($fecha_actual);
        	if(empty($ultimaFecha))
        	{
        		$data['msj_error'] = "<div align ='center' class='msj_error'>No existen estados diarios almacenados.</div>";
        		$this->load->view('mod_estadoDiario/no_data',$data);
        	}
        	else
        	{
        		
        		$data['fecha'] = $ultimaFecha->fecha;
	        	$idEstadoFecha = $this->estado_model->getIdEstados($data['fecha']);
                        $idEstado = $idEstadoFecha->idestadodiario;
                        $data['results'] = $this->estado_model->get_estado_pagination($idEstado);
                        $data['siguiente']="";
                        $data['ocultar'] = '0';
                        $this->load->view('mod_estadoDiario/index',$data);
        	}       	
        }
    }
    function validaCampos_search()
    {
    	if($this->uri->segment(4) == 1){
	    	$config = array(
	               array(
	                     'field'   => 'rolAdd',
	                     'label'   => 'Rol',
	                     'rules'   => 'required|min_length[5]'
	                  ),
	                array(
	                     'field'   => 'fechaAdd',
	                     'label'   => 'Fecha',
	                     'rules'   => 'required'
	                  ));
    	}
    	else
    	{
    		$config = array(
	               
	                array(
	                     'field'   => 'fechaAddEdit',
	                     'label'   => 'Fecha',
	                     'rules'   => 'required'
	                  ));
    	}
        
    	$this->form_validation->set_rules($config);
        if($this->form_validation->run() == FALSE)
        {
        	echo validation_errors('<div class="msj_error" align="center">','</div>');
        }
        else
        {
        	$fecha = $this->input->post('fechaAdd');
        	$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
        	if(!empty($idEstadoFecha))
			{
				echo "<script languaje=\"javascript\">alert('Existe un estado diario con la fecha indicada')</script>";
				$this->estado_model->clean_table(); 
				
			}
			else
			{
				$this->showLista($this->uri->segment(4));
			}
        	
        }
    }
    function showLista($opc)
    {
	 	if($opc == 1 ){
			$idCausa = $this->input->post('rolAdd');
			$data['verifica_rol'] = $this->estado_model->getRol($idCausa);
			if(empty($data['verifica_rol']->rol))
			{
				echo "<div align ='center' class='msj_error'>No existen coincidencias para <b>".$idCausa."</b></div>";
				
			}
			else
			{
		    	$materia = $this->estado_model->getMateria($this->input->post('rolAdd'));
		    	$sentencia = $this->input->post('sentenciaAdd');
		    	if($sentencia != 'Si')
		    	{
		    		$sentencia = 'No';
		    	}
		    	else
		    	{
		    		$sentencia = 'Si';
		    	}
		    	
		    	$data = array(
		    		'rol' => $idCausa, 
			 		'materia' => $materia->materia,
			 		'resoluciones' => $this->input->post('resolAdd'), 
					'sentencia' => $sentencia,
			 		'fecha' => $this->input->post('fechaAdd')
			 	);
				
				$this->estado_model->insertList($data);
				$this->show_html_view(1,0);
				
			}
	 	}
	 	else
	 	{
	 		$idCausa = $this->input->post('rolAddEdit');
			$data['verifica_rol'] = $this->estado_model->getRol($idCausa);
			if(empty($data['verifica_rol']->rol))
			{
				echo 'ok_edit_error'; 				
			}
			else
			{
		    	$materia = $this->estado_model->getMateria($this->input->post('rolAddEdit'));
		    	$sentencia = $this->input->post('sentenciaAddEdit');
		    	if($sentencia != 'Si')
		    	{
		    		$sentencia = 'No';
		    	}
		    	
		    	$data = array(
		    		'rol' => $idCausa, 
			 		'materia' => $materia->materia,
			 		'resoluciones' => $this->input->post('resolAddEdit'), 
					'sentencia' => $sentencia,
			 		'fecha' => $this->input->post('fechaAddEdit')
			 	);
				
				$this->estado_model->insertList($data);
				$this->show_html_view(2,0);
	 		}
	 	}
    }
    function borrar_fila()
    {
    	$fila_a_borrar = $this->uri->segment(4);
    	$this->estado_model->borra_fila_list($fila_a_borrar);
    	$data['salida'] = $this->estado_model->getList();
    	$this->estado_model->clean_table();
    	
    	foreach($data['salida'] ->result() as $list)
    	{
    		$data = array(
    			'rol' => $list->rol, 
	 			'materia' => $list->materia,
	 			'resoluciones' =>$list->resoluciones, 
				'sentencia' => $list->sentencia,
	 			'fecha' => $list->fecha	
    		);
    		$this->estado_model->insertList($data);
    	}
    		
    	if($this->uri->segment(5) == 1)
    	{
    		$this->show_html_view(1,0);
    	}
    	else
    	{
    		$this->show_html_view(2,0);
    	}

    }
        
    function generaEstado()	
    {
    	
    	if($this->uri->segment(4) == 1){
    		$fecha = $this->input->post('fechaAdd');
    		if($this->estado_model->almacena_estado_diario($fecha))
    		{
    			if($this->estado_model->almacena_estado_detalle($fecha))
    			{
    				echo '<div class="msj_success" align="center">Estado almacenado Correctamente</div>';
    				echo '<div class="msj_success" align="center">Archivo Pdf generado click para descargar <a href="'.base_url().'index.php/mod_estadoDiario/estado/generaPdf/'.$fecha.'"><img style="cursor:pointer" src="'.base_url().'system/application/views/images/icons/stencil_pdf_icon.gif" alt="pdf"/></a></div>';
    				$this->estado_model->clean_table();
    			}
    			else
    			{
    				$data['errorMensaje']="<div class='msj_error'>Error mientras se almacenaba estado para la fecha : ".$fecha.".</div>";
        			echo $data['errorMensaje'];
    			}
    			
    		}
    		else
    		{
    			$data['errorMensaje']="<div class='msj_error'>Error mientras se almacenaba estado para la fecha : ".$fecha.".</div>";
        		echo $data['errorMensaje'];
    		}
    	}
    	else
    	{
    		$config = array(
                array(
                     'field'   => 'fechaAddEdit',
                     'label'   => 'Fecha',
                     'rules'   => 'required'
                  )
                  );
	    	$this->form_validation->set_rules($config);

        
        	if($this->form_validation->run() == FALSE)
        	{
             	echo validation_errors('<div class="msj_error" align="center">','</div>');
       		}
        	else
        	{
	        	$fecha = $this->input->post('fechaAddEdit');
	    		$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
				$idEstado = $idEstadoFecha->idestadodiario;
	        	if($this->estado_model->edit_estado_detalle($fecha,$idEstado))
	    		{
	    			$this->estado_model->clean_table();
	    			echo '<div class="msj_success" align="center">Estado diario Editado Exitosamente<br />Archivo Pdf generado click para descargar <a href="'.base_url().'/index.php?/mod_estadoDiario/estado/generaPdf/'.$fecha.'"><img style="cursor:pointer" src="'.base_url().'system/application/views/images/icons/stencil_pdf_icon.gif" alt="pdf"/></a></div>';
	    		}
	    		else
	    		{
	    			$data['errorMensaje']="<div class='msj_error'>Error mientras se Editaba estado para la fecha : ".$fecha.".</div>";
	        		echo $data['errorMensaje'];
	    		}
        	}
    	}	
    	
    }
    function generaPdf()
    {
    	
    	$this->load->plugin('to_pdf');
    	$this->load->helper('file');
    	$data['fecha'] = $this->uri->segment(4);
    	$idEstadoGenerado = $this->estado_model->getIdEstados($data['fecha']);
    	$idEstado = $idEstadoGenerado->idestadodiario;
    	
    	$data['results'] = $this->estado_model->getEstados($idEstado);
    	$this->load->view('mod_estadoDiario/pdfView',$data);
    	$html = $this->output->get_output();
    	$nombre = 'estadodiario_'.$data['fecha'];
    	$orientacion = 'landscape';
    	pdf_create($orientacion,$html, $nombre);
    	
    }
	
	function validaCamposEdit()
     {
    	$config = array(
               array(
                     'field'   => 'fechaEstadoEdit',
                     'label'   => 'Fecha',
                     'rules'   => 'required'
                  ));
	    $this->form_validation->set_rules($config);

        
        if($this->form_validation->run() == FALSE)
        {
             echo validation_errors('<div class="msj_error" align="center">','</div>');
        }
        else
        {		
        	$this->estado_model->clean_table();
        	$this->editarEstado();
        }
    }
    
	function editarEstado()
	{
		$fecha = $this->input->post('fechaEstadoEdit');
		$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
		if(empty($idEstadoFecha))
		{
			echo "<div class='msj_error' align='center'>No existe estado para la fecha seleccionada</div>";
		}
		else
		{	
    		$fecha = $this->input->post('fechaEstadoEdit');
			$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
			$idEstado = $idEstadoFecha->idestadodiario;
			$this->show_html_view(2,$idEstado);
			
		}
	}
	
	function show_html_view($opc,$idEstado)
	{
		/*Agregar estados*/
		if($opc == 1)
		{
			$data['opt']=1;
			$data['formulario_ingreso']="";
			$data['botonera']= "";	
			$data['salida'] = $this->estado_model->getList();
		    $this->load->view('mod_estadoDiario/lista',$data);

		}
		/*Editar estados*/
		if($opc == 2)
		{
				$data['estado_diario'] = $this->estado_model->getEstados($idEstado);
				foreach($data['estado_diario'] ->result() as $list)
		    	{
		    		$data = array(
		    			'rol' => $list->rol_causa, 
			 			'materia' => $list->materia,
			 			'resoluciones' =>$list->resoluciones, 
						'sentencia' => $list->sentencia,
		    			'fecha' => $fecha = $this->input->post('fechaEstadoEdit')
		    		);
		    		$this->estado_model->insertList($data);
		    	}
				$data['salida'] = $this->estado_model->getList();
    			foreach($data['salida'] ->result() as $row){
	    			$data['formulario_ingreso'] = "<form id='agregaEstadoEdit' method='post'>
	    										<fieldset>
	    											<table>
	    												<tr><td>Fecha:</td><td><input type='text' name='fechaAddEdit' id='fechaAddEdit' size='10' value='".$row->fecha."' readonly = 'readonly'/></td></tr>
	    												<tr><td>Rol:</td><td><input type='text' name='rolAddEdit' id='rolAddEdit' size='10' value=''/><div id='hint1'></div></td>
															<td>Resoluciones:</td><td><input type='text' id='resolAddEdit' name='resolAddEdit' size='10' /></td>
															<td>Sentencia:</td>	<td><input type='checkbox' id='sentenciaAddEdit' name='sentenciaAddEdit' value='Si'/></td>
															<td><input type='button' value='Ingresar' onClick='javascript:estadoFunction(1,0,2);'/></td></tr>		
													</table>
												</fieldset>
												</form><div id='estadoMsj'></div>";
    			}
    			$data['botonera']= "<form>
    								<fieldset>
    									<table>
    										<tr><td><input type='button' value='Guardar Estado' onClick='javascript:estadoFunction(3,0,2);'/></td>
    										<td><input type='button' value='Limpiar' onClick='javascript:clean_edit();' /></td></tr>
										</table>
									</fieldset>
								</form>";
    			$data['opt']=2;
    			$this->load->view('mod_estadoDiario/lista',$data);
		}
		
	}
	function showEstado()
	{
		$fecha = $this->input->post('fechaEstado');
		$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
		if(empty($idEstadoFecha))
		{
			echo "<div class='msj_error' align='center'>No existe estado para la fecha seleccionada</div>";
		}
		else
		{
			$idEstado = $idEstadoFecha->idestadodiario;
                        $data['fecha'] = $this->estado_model->getFechaEstado($idEstado);
			$data['results'] = $this->estado_model->getEstados($idEstado);
			$this->load->view('mod_estadoDiario/showEstado',$data);
			
		}
	}
	
	function showEstado_delete()
	{
		$fecha = $this->input->post('fechaEstado_delete');
		$idEstadoFecha = $this->estado_model->getIdEstados($fecha);
		if(empty($idEstadoFecha))
		{
			echo "<div class='msj_error' align='center'>No existe estado para la fecha seleccionada</div>";
		}
		else
		{
			$idEstado = $idEstadoFecha->idestadodiario;
			$data['results'] = $this->estado_model->getEstados($idEstado);
			$data['idEstado'] = $idEstado;
			$this->load->view('mod_estadoDiario/showEstado_delete',$data);
			
		}
	}
	
	function delete_estado()
	{
		$fecha = $this->input->post('fechaEstado_delete');
		$idEstado = $this->uri->segment(4);
		if($this->estado_model->delete_estado($idEstado))
		{
			echo '<div class="msj_success" align="center">Estado diario eliminado con exito.</div>';
			
		}
		else
		{
			echo "<div class='msj_error'>Error mientras se eliminaba  estado para la fecha : ".$fecha.".</div>";
			
		}
	}
	function getRolAutocomplete()
	{
		$opc = $this->uri->segment(4);
		switch($opc)
		{
			case 1:
				$rol = $this->input->post('rolAdd');
			break;
			
			case 2:
				$rol = $this->input->post('rolAddEdit');
			break;
		}
		
		$rol = $this->estado_model->getRolAutocomplete(10,$rol);
		
		echo "<ul>";
		foreach ($rol->result() as $row)
		{
			echo "<li>".$row->rol."</li>";
		}
		echo "</ul>";	
	}
	function valida_campo_index()
	{
		$config = array(
	               array(
	                     'field'   => 'fechaEstado',
	                     'label'   => 'Fecha',
	                     'rules'   => 'required'
	                  ));
    	$this->form_validation->set_rules($config);
        if($this->form_validation->run() == FALSE)
        {
        	echo validation_errors('<div class="msj_error" align="center">','</div>');
        }
        else
        {
        	$this->showEstado();
        }
	}

        function anterior()
        {
            /*Fecha estado en pantalla*/
            $fechaEstado = $this->uri->segment(4);
            /*Obtendremos los datos del estado inmediatamente anterior al estado en pantalla*/
            $idAnterior = $this->estado_model->getIdEstadoAnterior($fechaEstado);
            /*Verificamos Límites*/
            $primerId = $this->estado_model->getFirstId();
             /*
              * Veridicaremos que el id exista para poder generar la consulta
              */

            $verifica_id = $this->estado_model->verificaId($idAnterior);

            while($verifica_id ->num_rows() == 0):
                $verifica_id = $this->estado_model->verificaId($idAnterior);
                $idAnterior = $idAnterior - 1;
                if($idAnterior <= $primerId):
                    break;
                endif;
            endwhile;

            if($idAnterior <= $primerId):
                $idAnterior = $primerId;
                $data['ocultar'] = 1;
             else:
                $data['ocultar'] = 0;
             endif;
            $data['fecha'] = $this->estado_model->getFechaEstado($idAnterior);
            $data['results'] = $this->estado_model->get_estado_pagination($idAnterior);
            $this->load->view('mod_estadoDiario/anterior',$data);

        }
        function siguiente()
        {
             /*Fecha estado en pantalla*/
            $fechaEstado = $this->uri->segment(4);
            /*Obtendremos los datos del estado inmediatamente anterior al estado en pantalla*/
            $idSiguiente = $this->estado_model->getIdEstadoSiguiente($fechaEstado);
            /*Verificamos límites y asignamos*/
            $ultimo_id = $this->estado_model->getLastId();

            /*
              * Veridicaremos que el id exista para poder generar la consulta
              */

            $verifica_id = $this->estado_model->verificaId($idSiguiente);

            while($verifica_id ->num_rows() == 0):
                $verifica_id = $this->estado_model->verificaId($idSiguiente);
                $idSiguiente = $idSiguiente + 1;
                if($idSiguiente >= $ultimo_id):
                    break;
                endif;
            endwhile;
            
            if($idSiguiente >= $ultimo_id):
                $idSiguiente = $ultimo_id;
                $data['ocultar'] = 2;
            else:
                $data['ocultar'] = 0;
            endif;
            $data['fecha'] = $this->estado_model->getFechaEstado($idSiguiente);
            $data['results'] = $this->estado_model->get_estado_pagination($idSiguiente);
            $this->load->view('mod_estadoDiario/siguiente',$data);
            
        }
}
//$data['siguiente'] = "";
?>